#include "testform.h"
#include "ui_testform.h"
#include <QDebug>
#include <QDateTime>
#include <QApplication>
#include <QSqlDatabase>

testForm::testForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::testForm)
{
    ui->setupUi(this);
    // 初始化系统核心功能
    initDatabase();
    initThreadPool();

    // 连接按钮点击信号到测试用户管理模块的槽函数
    connect(ui->testUserBtn, &QPushButton::clicked, this, [=](){
        UserManagement userMgr;
        // 测试用户注册
        if(userMgr.registerUser("rose", "123456",
                                "rose@example.com", "180000000")) {
            qDebug() << "用户注册成功";
        } else {
            qDebug() << "用户注册失败: " << userMgr.getLastError();
        }
        // 测试用户登录
        if(userMgr.login("rose", "123456")) {
            qDebug() << "用户登录成功";
        }
    });

    //显示数据表
    connect(ui->showTableBtn, &QPushButton::clicked, this,[=]() {
        showTable("users");
    });
}

// 初始化数据库
void testForm::initDatabase()
{
    qDebug() << "开始初始化数据库";
    // 创建用户管理对象，自动创建用户表
    UserManagement userMgr;
    // 创建设备管理对象，自动创建设备表
    DeviceManagement deviceMgr;
    // 创建数据监控对象，自动创建数据表
    DataMonitor dataMonitor;
    // 创建告警管理对象，自动创建告警规则表
    AlertManager alertMgr;
    qDebug() << "数据库初始化完成";
}

// 初始化线程池
void testForm::initThreadPool()
{
    // 设置线程池最大线程数为4
    ThreadPool::instance().setMaxThreadCount(4);
    qDebug() << "线程池已初始化";
}

// 显示数据表
void testForm::showTable(const QString &tableName)
{
    QSqlDatabase db = DatabasePool::instance().getConnection();
    model = new QSqlTableModel(this, db);
    model->setTable(tableName);
    model->select();

    ui->tableView->setModel(model);
    ui->tableView->show();

    DatabasePool::instance().releaseConnection(db);
}


testForm::~testForm()
{
    delete ui;
}
